package com.bienvenue.main.ui.activity.enterprise;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.bienvenue.main.R;
import com.bienvenue.main.base.BaseActivity;
import com.bienvenue.main.httpService.ResponseObserver;
import com.bienvenue.main.model.EnterprisePwdLoginModel;
import com.bienvenue.main.model.HttpBean;
import com.bienvenue.main.model.JobPostModel;
import com.bienvenue.main.model.PostJobModel;
import com.bienvenue.main.serviceApi.ServiceModel;
import com.bienvenue.main.utils.SPUtils;
import com.bienvenue.main.weight.LinesEditView;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectChangeListener;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.google.gson.Gson;


import java.io.File;
import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;

/**
 * 　　　　　　　 ┏┓       ┏┓+ +
 * 　　　　　　　┏┛┻━━━━━━━┛┻┓ + +
 * 　　　　　　　┃　　　　　　 ┃
 * 　　　　　　　┃　　　━　　　┃ ++ + + +
 * 　　　　　　 █████━█████  ┃+
 * 　　　　　　　┃　　　　　　 ┃ +
 * 　　　　　　　┃　　　┻　　　┃
 * 　　　　　　　┃　　　　　　 ┃ + +
 * 　　　　　　　┗━━┓　　　 ┏━┛
 * ┃　　  ┃
 * 　　　　　　　　　┃　　  ┃ + + + +
 * 　　　　　　　　　┃　　　┃　Code is far away from     bug with the animal protecting
 * 　　　　　　　　　┃　　　┃ + 　　　　         神兽保佑,代码无bug
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃　　+
 * 　　　　　　　　　┃　 　 ┗━━━┓ + +
 * 　　　　　　　　　┃ 　　　　　┣┓
 * 　　　　　　　　　┃ 　　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━━━┳┓┏┛ + + + +
 * 　　　　　　　　　 ┃┫┫　 ┃┫┫
 * 　　　　　　　　　 ┗┻┛　 ┗┻┛+ + + +
 * 版权：陇朝赢科技有限公司 版权所有
 *
 * @author 18592
 * 版本：1.0
 * 创建日期：2020/9/27
 * 描述：发布职位
 * ClassName：PostJobActivity
 * PackageName:com.bienvenue.main.ui.activity
 */
public class PostJobActivity extends BaseActivity {
    @BindView(R.id.tv_job_name)
    TextView tvJobName;
    @BindView(R.id.tv_working_years)
    TextView tvWorkingYears;
    @BindView(R.id.tv_job_money)
    TextView tvJobMoney;
    @BindView(R.id.tv_education)
    TextView tvEducation;
    @BindView(R.id.tv_benefit_label)
    TextView tvBenefitLabel;
    @BindView(R.id.tv_morning_select)
    TextView tvMorningSelect;
    @BindView(R.id.tv_afternoon_select)
    TextView tvAfternoonSelect;
    @BindView(R.id.et_address)
    EditText etAddress;
    //岗位职责
    @BindView(R.id.et_job_responsibilities)
    LinesEditView etJobResponsibilities;
    //岗位要求
    @BindView(R.id.et_job_requirements)
    LinesEditView etJobRequirements;
    //公司介绍
    @BindView(R.id.et_company_profile)
    LinesEditView etCompanyProfile;

    List<String> stringList = new ArrayList<>();
    List<String> startOrEndTimeList = new ArrayList<>();
    List<String> hourList = new ArrayList<>();
    List<String> minuteList = new ArrayList<>();

    String tvWorkingYearsId, tvEducationId, positionId, tvJobMoneyId, tvBenefitLabelId;
    String companyId;

    @Override
    protected void initData() {
        companyId = SPUtils.getString("companyId");
        showLog(companyId);
    }

    @Override
    protected void initView() {

    }

    @Override
    protected int getLayoutId() {
        return R.layout.activity_post_job;
    }

    @OnClick(R.id.tv_return_btn)
    void onFinish() {
        this.finish();
    }

    @OnClick(R.id.tv_draft_btn)
    void onDraft() {
        tvJobName.setText("JAVA");
        positionId = "123123";
        //解释：这里为什么不用&&直接判断完呢？这是因为业务需求上需要把所有的东西全部填完整，并且提示对应空的值，如果有更好的建议，请指出
        if (tvJobName.getText().toString().trim().equals("请选择职位名称") && TextUtils.isEmpty(positionId)) {
            showToast("请选择职位");
            return;
        } else if (tvJobMoney.getText().toString().trim().equals("请选择薪资") && TextUtils.isEmpty(tvJobMoneyId)) {
            showToast("请选择工资区间");
            return;
        } else if (tvWorkingYears.getText().toString().trim().equals("请选择工作年限") && TextUtils.isEmpty(tvWorkingYearsId)) {
            showToast("请选择工作年限");
            return;
        } else if (tvEducation.getText().toString().trim().equals("请选择学历") && TextUtils.isEmpty(tvEducationId)) {
            showToast("请选择学历");
            return;
        } else if (tvBenefitLabel.getText().toString().trim().equals("请选择福利标签") && TextUtils.isEmpty(tvBenefitLabelId)) {
            showToast("请选择福利标签");
            return;
        } else if (TextUtils.isEmpty(etJobResponsibilities.getContentText().trim()) || etJobResponsibilities.getContentText().trim().equals("")) {
            showToast("请输入岗位职责描述");
            return;
        } else if (TextUtils.isEmpty(etJobRequirements.getContentText().trim()) || etJobRequirements.getContentText().trim().equals("")) {
            showToast("请输入岗位要求");
            return;
        } else if (TextUtils.isEmpty(etCompanyProfile.getContentText().trim()) || etCompanyProfile.getContentText().trim().equals("")) {
            showToast("请输入公司介绍");
            return;
        } else if (tvMorningSelect.getText().toString().trim().equals("上午") || TextUtils.isEmpty(tvMorningSelect.getText().toString().trim())) {
            showToast("请输入上班时间");
            return;
        } else if (tvAfternoonSelect.getText().toString().trim().equals("下午") || TextUtils.isEmpty(tvAfternoonSelect.getText().toString().trim())) {
            showToast("请输入下班时间");
            return;
        } else if (TextUtils.isEmpty(etAddress.getText().toString().trim()) || etAddress.getText().toString().trim().equals("")) {
            showToast("请输入公司地址");
            return;
        } else if (TextUtils.isEmpty(companyId)) {
            showToast("登录出错，请退出后重新登录");
            return;
        }
        //草稿
        PostJobModel postJobModel = new PostJobModel();
        postJobModel.setCompanyid(companyId);
        postJobModel.setCompanyinfo(etCompanyProfile.getContentText().trim());
        postJobModel.setAddress(etAddress.getText().toString().trim());
        postJobModel.setWorkyears(tvWorkingYearsId);
        postJobModel.setEducationid(tvEducationId);
        postJobModel.setPositionid(positionId);
        postJobModel.setRequirements(etJobRequirements.getContentText().trim());
        postJobModel.setResponsibilities(etJobResponsibilities.getContentText().trim());
        postJobModel.setSalaryid(tvJobMoneyId);
        postJobModel.setWelfarelabelids(tvBenefitLabelId);
        postJobModel.setWorktime(tvMorningSelect.getText().toString().trim() + "-" + tvAfternoonSelect.getText().toString().trim());
        postJobModel.setStatus("1");

        Gson gson = new Gson();
        String json = gson.toJson(postJobModel);
        Log.e("TAG", json);
        ServiceModel.getServiceModel().onPostJob(postJobModel, new ResponseObserver<HttpBean>() {
            @Override
            public void onSuccess(HttpBean response) {
                if (response.getCode() == 200) {
                    showToast("已完成保存");
                    PostJobActivity.this.finish();

                } else {
                    showToast(response.getMsg());
                }

            }

            @Override
            public void onFail(String message) {
                showLog(message);
            }
        });
    }

    @OnClick(R.id.tv_post_btn)
    void onPost() {
        tvJobName.setText("JAVA");
        positionId = "123123";
        //解释：这里为什么不用&&直接判断完呢？这是因为业务需求上需要把所有的东西全部填完整，并且提示对应空的值，如果有更好的建议，请指出
        if (tvJobName.getText().toString().trim().equals("请选择职位名称") && TextUtils.isEmpty(positionId)) {
            showToast("请选择职位");
            return;
        } else if (tvJobMoney.getText().toString().trim().equals("请选择薪资") && TextUtils.isEmpty(tvJobMoneyId)) {
            showToast("请选择工资区间");
            return;
        } else if (tvWorkingYears.getText().toString().trim().equals("请选择工作年限") && TextUtils.isEmpty(tvWorkingYearsId)) {
            showToast("请选择工作年限");
            return;
        } else if (tvEducation.getText().toString().trim().equals("请选择学历") && TextUtils.isEmpty(tvEducationId)) {
            showToast("请选择学历");
            return;
        } else if (tvBenefitLabel.getText().toString().trim().equals("请选择福利标签") && TextUtils.isEmpty(tvBenefitLabelId)) {
            showToast("请选择福利标签");
            return;
        } else if (TextUtils.isEmpty(etJobResponsibilities.getContentText().trim()) || etJobResponsibilities.getContentText().trim().equals("")) {
            showToast("请输入岗位职责描述");
            return;
        } else if (TextUtils.isEmpty(etJobRequirements.getContentText().trim()) || etJobRequirements.getContentText().trim().equals("")) {
            showToast("请输入岗位要求");
            return;
        } else if (TextUtils.isEmpty(etCompanyProfile.getContentText().trim()) || etCompanyProfile.getContentText().trim().equals("")) {
            showToast("请输入公司介绍");
            return;
        } else if (tvMorningSelect.getText().toString().trim().equals("上午") || TextUtils.isEmpty(tvMorningSelect.getText().toString().trim())) {
            showToast("请输入上班时间");
            return;
        } else if (tvAfternoonSelect.getText().toString().trim().equals("下午") || TextUtils.isEmpty(tvAfternoonSelect.getText().toString().trim())) {
            showToast("请输入下班时间");
            return;
        } else if (TextUtils.isEmpty(etAddress.getText().toString().trim()) || etAddress.getText().toString().trim().equals("")) {
            showToast("请输入公司地址");
            return;
        } else if (TextUtils.isEmpty(companyId)) {
            showToast("登录出错，请退出后重新登录");
            return;
        }
        //保存或上传
        PostJobModel postJobModel = new PostJobModel();
        postJobModel.setCompanyid(companyId);
        postJobModel.setCompanyinfo(etCompanyProfile.getContentText().trim());
        postJobModel.setAddress(etAddress.getText().toString().trim());
        postJobModel.setWorkyears(tvWorkingYearsId);
        postJobModel.setEducationid(tvEducation.getText().toString().trim());
        postJobModel.setPositionid(positionId);
        postJobModel.setRequirements(etJobRequirements.getContentText().trim());
        postJobModel.setResponsibilities(etJobResponsibilities.getContentText().trim());
        postJobModel.setSalaryid(tvJobMoney.getText().toString().trim());
        postJobModel.setWelfarelabelids(tvBenefitLabel.getText().toString().trim());
        postJobModel.setWorktime(tvMorningSelect.getText().toString().trim() + "-" + tvAfternoonSelect.getText().toString().trim());
        postJobModel.setStatus("0");
        ServiceModel.getServiceModel().onPostJob(postJobModel, new ResponseObserver<HttpBean>() {
            @Override
            public void onSuccess(HttpBean response) {
                if (response.getCode() == 200) {
                    showToast("已上传");
                    PostJobActivity.this.finish();

                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                showLog(message);
            }
        });
    }

    @OnClick(R.id.ll_job_name)
    void onJobName() {
        showToast("此功能暂未实现");
    }

    @OnClick(R.id.tv_job_money)
    void onJobMoney() {
        ServiceModel.getServiceModel().getListByTypePositionSalary(new ResponseObserver<JobPostModel>() {
            @Override
            public void onSuccess(JobPostModel response) {
                if (response.getCode() == 200) {
                    if (stringList != null && stringList.size() > 0) {
                        stringList.clear();
                    }
                    for (int i = 0; i < response.getData().size(); i++) {
                        stringList.add(response.getData().get(i).getVal());
                    }
                    OptionsPickerView pvOptions = new OptionsPickerBuilder(PostJobActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            //返回的分别是三个级别的选中位置
                            if (response.getData().get(options1).getVal().equals(stringList.get(options1))) {
                                tvJobMoneyId = response.getData().get(options1).getId();
                            }
                            tvJobMoney.setText(stringList.get(options1));

                        }
                    })
                            .setTitleText("请选择薪资")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();
                    pvOptions.setPicker(stringList);
                    pvOptions.show();

                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                Log.e("TAG", message);

            }
        });

    }

    @OnClick(R.id.tv_working_years)
    void onWorkingYears() {
        ServiceModel.getServiceModel().getListByTypeWorkYears(new ResponseObserver<JobPostModel>() {
            @Override
            public void onSuccess(JobPostModel response) {
                if (response.getCode() == 200) {
                    if (stringList != null && stringList.size() > 0) {
                        stringList.clear();
                    }
                    for (int i = 0; i < response.getData().size(); i++) {
                        stringList.add(response.getData().get(i).getVal());
                    }
                    OptionsPickerView pvOptions = new OptionsPickerBuilder(PostJobActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            //返回的分别是三个级别的选中位置
                            if (response.getData().get(options1).getVal().equals(stringList.get(options1))) {
                                tvWorkingYearsId = response.getData().get(options1).getId();
                            }
                            tvWorkingYears.setText(stringList.get(options1));
                        }
                    })
                            .setTitleText("请选择工作年限")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();
                    pvOptions.setPicker(stringList);
                    pvOptions.show();
                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                Log.e("TAG", message);
            }
        });
    }

    @OnClick(R.id.tv_education)
    void onEducation() {
        ServiceModel.getServiceModel().getListByTypeEducate(new ResponseObserver<JobPostModel>() {
            @Override
            public void onSuccess(JobPostModel response) {
                if (response.getCode() == 200) {

                    if (stringList != null && stringList.size() > 0) {
                        stringList.clear();
                    }
                    for (int i = 0; i < response.getData().size(); i++) {
                        stringList.add(response.getData().get(i).getVal());
                    }
                    OptionsPickerView pvOptions = new OptionsPickerBuilder(PostJobActivity.this, new OnOptionsSelectListener() {
                        @Override
                        public void onOptionsSelect(int options1, int options2, int options3, View v) {
                            //返回的分别是三个级别的选中位置
                            if (response.getData().get(options1).getVal().equals(stringList.get(options1))) {
                                tvEducationId = response.getData().get(options1).getId();
                            }
                            tvEducation.setText(stringList.get(options1));
                        }
                    })
                            .setTitleText("请选择学历")
                            .setDividerColor(Color.BLACK)
                            .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                            .setContentTextSize(20)
                            .build();
                    pvOptions.setPicker(stringList);
                    pvOptions.show();
                } else {
                    showToast(response.getMsg());
                }
            }

            @Override
            public void onFail(String message) {
                Log.e("TAG", message);
            }
        });
    }

    @OnClick(R.id.tv_benefit_label)
    void onBenefit() {
        startActivityForResult(new Intent(PostJobActivity.this, WelfareLabelActivity.class), 101);
    }


    @OnClick(R.id.tv_morning_select)
    void onMorningSelect() {
        startOrEndTimeDate();
        OptionsPickerView pvOptions = new OptionsPickerBuilder(PostJobActivity.this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                //返回的分别是三个级别的选中位置
                String endDate = startOrEndTimeList.get(options1) + hourList.get(options2) + minuteList.get(options3);
                tvMorningSelect.setText(endDate);
            }
        })
                .setTitleText("请选择开始时间")
                .setDividerColor(Color.BLACK)
                .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                .setContentTextSize(20)
                .setSelectOptions(0, 1)//默认选中项
                .isRestoreItem(true)//切换时是否还原，设置默认选中第一项。
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .build();
        pvOptions.setNPicker(startOrEndTimeList, hourList, minuteList);
        pvOptions.show();
    }

    @OnClick(R.id.tv_afternoon_select)
    void onAfternoonSelect() {
        startOrEndTimeDate();
        OptionsPickerView pvOptions = new OptionsPickerBuilder(PostJobActivity.this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                //返回的分别是三个级别的选中位置
                String endDate = startOrEndTimeList.get(options1) + hourList.get(options2) + minuteList.get(options3);
                tvAfternoonSelect.setText(endDate);
            }
        })
                .setTitleText("请选择结束时间")
                .setDividerColor(Color.BLACK)
                .setTextColorCenter(Color.BLACK) //设置选中项文字颜色
                .setContentTextSize(20)
                .setSelectOptions(0, 1)//默认选中项
                .isRestoreItem(true)//切换时是否还原，设置默认选中第一项。
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .build();
        pvOptions.setNPicker(startOrEndTimeList, hourList, minuteList);
        pvOptions.show();
    }

    void startOrEndTimeDate() {

        if (startOrEndTimeList != null && startOrEndTimeList.size() > 0) {
            startOrEndTimeList.clear();
        } else if (hourList != null && hourList.size() > 0) {
            hourList.clear();
        } else if (minuteList != null && minuteList.size() > 0) {
            minuteList.clear();
        }
        startOrEndTimeList.add("上午");
        startOrEndTimeList.add("下午");

        hourList.add("1时");
        hourList.add("2时");
        hourList.add("3时");
        hourList.add("4时");
        hourList.add("5时");
        hourList.add("6时");
        hourList.add("7时");
        hourList.add("8时");
        hourList.add("9时");
        hourList.add("10时");
        hourList.add("11时");
        hourList.add("12时");

        minuteList.add("1分钟");
        minuteList.add("2分钟");
        minuteList.add("3分钟");
        minuteList.add("4分钟");
        minuteList.add("5分钟");
        minuteList.add("6分钟");
        minuteList.add("7分钟");
        minuteList.add("8分钟");
        minuteList.add("9分钟");
        minuteList.add("10分钟");
        minuteList.add("11分钟");
        minuteList.add("12分钟");
        minuteList.add("13分钟");
        minuteList.add("14分钟");
        minuteList.add("15分钟");
        minuteList.add("16分钟");
        minuteList.add("17分钟");
        minuteList.add("18分钟");
        minuteList.add("19分钟");
        minuteList.add("20分钟");
        minuteList.add("21分钟");
        minuteList.add("22分钟");
        minuteList.add("23分钟");
        minuteList.add("24分钟");
        minuteList.add("25分钟");
        minuteList.add("26分钟");
        minuteList.add("27分钟");
        minuteList.add("28分钟");
        minuteList.add("29分钟");
        minuteList.add("30分钟");
        minuteList.add("31分钟");
        minuteList.add("32分钟");
        minuteList.add("33分钟");
        minuteList.add("34分钟");
        minuteList.add("35分钟");
        minuteList.add("36分钟");
        minuteList.add("37分钟");
        minuteList.add("38分钟");
        minuteList.add("39分钟");
        minuteList.add("40分钟");
        minuteList.add("41分钟");
        minuteList.add("42分钟");
        minuteList.add("43分钟");
        minuteList.add("44分钟");
        minuteList.add("45分钟");
        minuteList.add("46分钟");
        minuteList.add("47分钟");
        minuteList.add("48分钟");
        minuteList.add("49分钟");
        minuteList.add("50分钟");
        minuteList.add("51分钟");
        minuteList.add("52分钟");
        minuteList.add("53分钟");
        minuteList.add("54分钟");
        minuteList.add("55分钟");
        minuteList.add("56分钟");
        minuteList.add("57分钟");
        minuteList.add("58分钟");
        minuteList.add("59分钟");
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
                case 101:
                    Bundle bundle = data.getExtras();
                    if (bundle!=null){
                        ArrayList<String> ids = bundle.getStringArrayList("list");
                        if (ids!=null&&ids.size()>0){
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                                tvBenefitLabelId =String.join(",",ids);
                            }
                        }
                    }else{
                        return;
                    }
                    break;
            }
        }
    }
}
